﻿using System;
using System.Collections.Generic;
using MySql.Data.MySqlClient;
using SISTEMA_ALPROVIDE.Bean;
using SISTEMA_ALPROVIDE.Model;

namespace SISTEMA_ALPROVIDE.DAO
{
    public class DAOProducto
    {
        private ConexionBD conn = new ConexionBD();

        public List<TipoProducto> ObtenerTipoProducto()
        {
            List<TipoProducto> listaTipo = new List<TipoProducto>();

            try
            {
                conn.Open();
                MySqlCommand comm = new MySqlCommand();
                comm.Connection = conn.getConexion;
                comm.CommandText = "SELECT * FROM tipo_producto";

                MySqlDataReader myReader = comm.ExecuteReader();

                while (myReader.Read()) {
                    TipoProducto tipo = new TipoProducto();
                    tipo.IdTipoProducto = Convert.ToInt32(myReader["IDTIPOPRODUCTO"]);
                    tipo.ZonaAlmacen = Convert.ToString(myReader["ZONAALMACEN"]);
                    tipo.Descripcion = Convert.ToString(myReader["DESCRIPCION"]);

                    listaTipo.Add(tipo);

                }

                return listaTipo;

            }
            catch (Exception e)
            {
                throw e;
            }
            finally {
                conn.Close();
                
            }
        }

        public List<Producto> ObtenerProducto(string nombre, int codigo, int tipoProducto)
        {
            List<Producto> listaProducto = new List<Producto>();
            try
            {
                conn.Open();
                MySqlCommand comm = new MySqlCommand();
                comm.Connection = conn.getConexion;
                comm.CommandText = "SELECT * FROM producto where ESTADO = 1";

                if (!String.IsNullOrEmpty(nombre)) {
                    comm.CommandText += " AND NOMBRE LIKE '%" + nombre + "%'";
                }

                if (codigo != 0) {
                    comm.CommandText += " AND IDPRODUCTO = " + codigo + "";
                }

                if (tipoProducto != 1000) {
                    comm.CommandText += " AND IDTIPOPROD = " + tipoProducto + "";
                }

                MySqlDataReader myReader = comm.ExecuteReader();

                while (myReader.Read())
                {
                    Producto producto = new Producto();
                    producto.IdProducto = Convert.ToInt32(myReader["IDPRODUCTO"]);
                    producto.NombreProducto = Convert.ToString(myReader["NOMBRE"]);
                    producto.Peso = Convert.ToDouble(myReader["PESO"]);
                    producto.Precio = Convert.ToDouble(myReader["PRECIO"]);
                    producto.FechaFabricacion = Convert.ToDateTime(myReader["FECHA_FABRICACION"]);
                    producto.FechaVencimiento = Convert.ToDateTime(myReader["FECHA_VENCIMIENTO"]);
                    producto.Marca = Convert.ToString(myReader["MARCA"]);
                    producto.IdTipoProducto = Convert.ToInt32(myReader["IDTIPOPROD"]);
                    producto.UnidadVenta = Convert.ToString(myReader["UNI_VENTA"]);
                    producto.Stock = Convert.ToInt32(myReader["STOCK"]);

                    listaProducto.Add(producto);
                }

                return listaProducto;

            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                conn.Close();

            }
        }
    }
}
